﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using ShopNet.Model;

namespace ShopNet
{
    public partial class RetornoPagSeguro : System.Web.UI.Page
    {
        #region Propriedades

        public new Shop Master
        {
            get
            {
                return ((Shop)(base.Master));
            }
        }

        private Usuario Us
        {
            get
            {
                MembershipUser user = Membership.GetUser();
                Usuario us = NServico.Db.Usuarios.FirstOrDefault(u => u.UserId == user.UserName);
                return us;
            }
        }

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            Master.ExibirMensagem(Shop.TipoMensagem.Success, string.Empty);

            if (Request.HttpMethod == "POST")
            {
                //o método POST indica que a requisição é o retorno da validação NPI.

                string Token = "123456";
                //string Pagina = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml";
                string Pagina = "http://localhost:9090/pagseguro-ws/checkout/NPI.jhtml";
                string Dados = HttpContext.Current.Request.Form.ToString() + "&Comando=validar" + "&Token=" + Token;

                System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(Pagina);

                req.Method = "POST";
                req.ContentLength = Dados.Length;
                req.ContentType = "application/x-www-form-urlencoded";

                System.IO.StreamWriter stOut = new System.IO.StreamWriter(req.GetRequestStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));
                stOut.Write(Dados);
                stOut.Close();

                System.IO.StreamReader stIn = new System.IO.StreamReader(req.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("ISO-8859-1"));
                string Result = stIn.ReadToEnd();
                stIn.Close();

                if (Result == "VERIFICADO")
                {
                    Master.ExibirMensagem(Shop.TipoMensagem.Success, "Compra Efetuada com sucesso");
                }
                else if (Result == "FALSO")
                {
                    Master.ExibirMensagem(Shop.TipoMensagem.Error, "Ocorreu um Erro durante a compra");
                }
                else
                {
                    //erro na integração com PagSeguro.
                }
            }
            else if (Request.HttpMethod == "GET")
            {
                //o método GET indica que a requisição é o retorno do Checkout PagSeguro para o site vendedor.
                //no término do checkout o usuário é redirecionado para este bloco.
            }
        }
    }
}